#include <iostream>
using namespace std;
#include <pthread.h>
#include <unistd.h>
#include <vector>
#include <cstring>
#define THREAD_NUM 5

void* print(void*args)
{
    while(true)
    {
    cout<<"i am a thread!!"<<endl;
    //sleep(1);
    }
    return nullptr;
}
int main()
{
    pthread_t tid;
    pthread_create(&tid,nullptr,print,nullptr);
   int code= pthread_cancel(tid);
    if(code==0)
    {
    cout<<"取消成功"<<endl;

    }
    else
    cout<<"取消失败"<<endl;
    //sleep(1);//线程已被启动
    pthread_join(tid,nullptr);
    return 0;
}




// void* print(void*args)
// {
//     cout<<"i am a thread!!"<<endl;
//     pthread_exit((void*)100);
//     return nullptr;
// }
// int main()
// {
//     pthread_t tid;
//     pthread_create(&tid,nullptr,print,nullptr);
//     sleep(1);//线程已被启动
//     void*retval;
//     pthread_join(tid,&retval);
//     (long long int)retval;
//     printf("%d\n",retval);
//     return 0;
// }




// void* print(void*args)
// {
//     //pthread_detach(pthread_self());
//     cout<<"i am a thread!!"<<endl;
//     return nullptr;
// }
// int main()
// {
//     pthread_t tid;
//     pthread_create(&tid,nullptr,print,nullptr);
//     pthread_detach(tid);
//    // sleep(1);//等待1s让线程分离完成
//     int code=pthread_join(tid,nullptr);
//     if(code==0)
//     {
//         cout<<"wait success !!"<<endl;
//     }
//     else
//     cout<<"wait false!! error num is:" <<code<<"error message :"<<strerror(code)<<endl;
//     return 0;
// }












// void* print(void* args)
// {
    
//     cout<<"i am a thread !!!! tid is ："<<pthread_self()<<"  pid is:"<<getpid()<<endl;
//         sleep(1);
//     return nullptr;
// }
// int main()
// {
//     vector<pthread_t> tids;
//     //批量创建线程并保存tid
//     for(int i=0;i<THREAD_NUM;i++)
//     {
//     pthread_t tid;
//     pthread_create(&tid,nullptr,print,nullptr);
//     tids.push_back(tid);
//     }


//     for(int i=0;i<THREAD_NUM;i++)
//     {
//     int n=pthread_join(tids[i],nullptr);//线程批量等待
//     if(n==0)cout<<"wait success!!!  tid is : "<<tids[i]<<endl;
//     }
//     //sleep(10);//保证主线程最后退出
//     return 0;
// }